import java.util.ArrayList;


public class Polynome {
	private ArrayList<Integer> poly;
	private ArrayList<Integer> degres;
	private int size;
	private ArrayList<Integer> sequence;
	
	public Polynome(int n){
		poly = new ArrayList<Integer>();
		degres = new ArrayList<Integer>();
		sequence = new ArrayList<Integer>();
		size = n;
	}
	
	public void shift(int res){
		//poly.remove(size-1);
		//poly.add(0,res);
		
		poly.remove(0);
		poly.add(res);
		
	}
	
	public void shiftBis(int res){
		poly.remove(size-1);
		poly.add(0,res);
	}
	
	public void generatePoly(){
		for(int i=0; i<size; i++){
			poly.add((int) Math.round(Math.random()));
		}
	}

	public void generateDegres() {		
		for(int i=0; i<size; i++) {
			if(poly.get(i) == 1) {
				degres.add(i);
			}
		}
	}
	
	public int getSize() {
		return size;
	}
	
	public ArrayList<Integer> getPoly() {
		return poly;
	}
	
	public ArrayList<Integer> getDegres() {
		return degres;
	}
	
	public ArrayList<Integer> getSequence() {
		return sequence;
	}
	
	public String toString(){
		String concat = "";
		//for(int j=0; j<size; j++){
		for(int j=size-1; j>=0; j--){
			concat += poly.get(j);
		}
		return concat;
	}
	
	public int calcOut(){
		sequence.add(getPoly().get(0));
		
		int res = 0;
		for(int j=0; j<size; j++){
			if(getDegres().contains((Integer) j)){
				res += getPoly().get(j);
			}
		}
		res = res % 2;
		int retour = getPoly().get(size-1);
		shift(res);
		//return res;
		return retour;
	}
}
